package Modelo;
import java.util.Collection;
import java.util.Iterator;

public class Vacio implements Bloque {
	
	private Alojador unAlojadorPersonaje;
	private boolean esFirme;
	
	
	/**
	 * Este contenedor no va a ser pisable (no es firme)
	 * y se va a avanzar un bloque por turno
	 * 
	 * */
	public Vacio(Mapa mapa){
		this.esFirme = false;
		this.unAlojadorPersonaje = new AlojadorPersonaje();
	}
	
	/**
	 * Este contenedor puede alojar a muchos Personaje
	 * @param Personaje es un Personaje del planeta
	 * @see Personaje
	 * */
	public void alojar(Personaje unPersonaje) {
		this.unAlojadorPersonaje.alojar(unPersonaje);
	}

	/**
	 * Remueve el Personaje pasaso por parametro, si es que este 
	 * se encuentra en este contenendor
	 * @param Personaje
	 * */
	public void desalojar(Personaje unPersonaje) {
		this.unAlojadorPersonaje.desalojar(unPersonaje);
	}

	/**
	 * Indica si es firme como para pisarla, osea si es pisable.
	 * @return boolean 
	 * */
	public boolean esFirme() {
		return this.esFirme;
		
	}

	/**
	 * Indica si el Personaje pasado por parametro esta siendo alojado
	 * por este bloque
	 * @param Personaje
	 * @return boolean 
	 * */
	public boolean estaAlojado(Personaje unPersonaje) {
		return this.unAlojadorPersonaje.estaAlojado(unPersonaje);
	}

	public void destruir(){
		Collection<Personaje> aMatar= unAlojadorPersonaje.getAlojados();
		Iterator<Personaje> it= aMatar.iterator();
		while(it.hasNext())
			it.next().morir();
	}
	
	public Numeros velocidadFinal(Numeros velocidad){
		return velocidad.sumar(new Real(Constantes.gravedad));
	}

	public Collection<Personaje> getAlojados() {
		return unAlojadorPersonaje.getAlojados();
	}

	public void atacar(Numeros potenciaDelAtaque) {
		
	}
}
